home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / LIBRARY / PAS_0693 / CAPTURE.PAS < prev    next >
Pascal/Delphi Source File  |  1993-06-30  |  2KB  |  57 lines

  1. {─ Fido Pascal Conference ────────────────────────────────────────────── PASCAL ─
  2. Msg  : 318 of 434
  3. From : Sean Palmer                         1:104/123.0          08 Jun 93  00:26 
  4. To   : Frank Livaudais                                                           
  5. Subj : TSR Dump                                                               
  6. ────────────────────────────────────────────────────────────────────────────────
  7. FL>Does anyone have any code that will go tsr and dump the
  8. FL>pixel colors in a 320.256. whatever that mode is into a
  9. FL>text file in the format 200,5,0,0,0,4, etc?  just list
  10. FL>every pixel followed by a comma?
  11.  
  12. The TSR part would be the hard part, the writing the screen to a file
  13. would be easy.
  14.  
  15. I wrote this little prog just now, not incredibly great but might
  16. actually work and probably will do the job...
  17.  
  18. Be careful as it doesn't check for DOS reentrancy and you might hang
  19. your computer if you try to capture a screen while DOS is doing
  20. something else...}
  21.  
  22. program capture; {by Sean Palmer, public domain}
  23.  
  24. uses dos;
  25.  
  26. procedure writeScrn2File;
  27.  var f:text;x,y:word;
  28. begin
  29.  assign(f,'CAPTURE.SCR');
  30.  rewrite(f);
  31.  for y:=0 to 199 do
  32.   for x:=0 to 319 do begin
  33.    write(f,mem[$A000:y*320+x],',');
  34.    if x mod 20=0 then writeln(f);  {new line every 20 pixels}
  35.    end;
  36.  close(f);
  37.  end;
  38.  
  39. var oldIntVec:procedure;
  40.  
  41. {you need to put a REAL check for dos activity here}
  42.  
  43. function dosActive:boolean;begin dosActive:=false; end; {assume no and}
  44.                                              {keep fingers crossed! 8)}
  45.  
  46. procedure keyHandler; interrupt;begin
  47.  if port[$60]=114 then     {if print-screen pressed}
  48.   if not dosActive then {better NOT press while DOS is doing something}
  49.    writeScrn2File;
  50.  oldIntVec;  {call old handler}
  51.  end;
  52.  
  53. begin
  54.  getIntVec(9,@oldIntVec);
  55.  setIntVec(9,@newIntVec);
  56.  keep(0);  {go TSR}
  57.  end.